﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace TP2.Lib
{
     [Serializable]
    public class AvionCivil : VehiculoAereo
    {
        const int VIDA_MAX_CIVIL = 25,
                  VIDA_CIVIL = 25,
                  RAPIDEZ_CIVIL = 2,
                  RADIO_CIVIL = 14,
                  PTOS_X_DESTRUC_CIVIL = -300;

        private AvionCivil() { } /*Contructor vacio, lo utiliza la serialización*/

        public AvionCivil(double[] posicionInicial, double[] posicionFinal, int[] dimensiones) : base(posicionInicial, dimensiones)
        {
            this.VidaMaxima = VIDA_MAX_CIVIL;
            this.Vida = VIDA_CIVIL;
            this.Rapidez = RAPIDEZ_CIVIL;
            this.Radio = RADIO_CIVIL;
            this.PuntosPorDestruccion = PTOS_X_DESTRUC_CIVIL;
            this.Recorrido = new MovimientoLineal(posicionInicial, posicionFinal, this.Rapidez);
        }

        public override Proyectil Actuar()
        {
            this.Mover();
            return null;
        }

        public override void AgregateALista(List<ElementoJuego> lista1, List<ElementoJuego> lista2)
        {
            lista2.Add(this);
        }

        public override void Impactar(ElementoJuego impactante)
        {
            impactante.ImpactarConAvionCivil();
        }

        public override void ImpactarConHelicopteroPolicia()
        {
            throw new NotImplementedException();
        }

        public override void ImpactarConTanqueEnergia(TanqueEnergia impactante)
        {
            throw new NotImplementedException();
        }

        public override void ImpactarConArma(Arma impactante)
        {
            throw new NotImplementedException();
        }

        public override void ImpactarConAvionEnemigo()
        {
            throw new NotImplementedException();
        }

        public override void ImpactarConAvionCivil()
        {
            throw new NotImplementedException();
        }

        #region /*--------- Metodos Privados -------------*/

        private void Mover()
        {
            double[] posicion = new double[3];
            posicion = this.Recorrido.GetSiguientePunto(this.Posicion);
            this.Posicion = posicion;
        }

        #endregion
    }
}
